A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever.
The invention disclosed herein relates generally to computer language compilers. More particularly, the present invention relates to a method and system for compiling natural language instructions in a source code file into computer-executable code.
Most computer programmers prefer to write software programs in high-level languages, such as BASIC, Pascal, C, C++, Java, etc. These languages offer the ability to use instructions which are more flexible, easier to understand, and more intuitive than the limited machine level instructions directly executable by a processor. The source code files written in high-level languages are converted to machine level, object code files by compilers.
Despite the flexibility offered by high-level languages over machine language, modem computer languages are still relatively constraining when compared with non-computer, or natural, languages. Compilers require programmers to limit their programs to the constraints of the available computer languages and to adhere to the strict lexical and syntactical rules of the language. Any mistakes in lexicon or syntax result in errors and an ultimate failure of compilation.
It is therefore desirable to allow programmers to write programs in natural language. However, systems which have attempted to provide this ability usually require substantial processing and storage requirements and involve sophisticated and complex technical solutions such as artificial intelligence to translate natural language into program code. Moreover, while there are many types of problems that can be solved with natural language programming, there are other problems that are better solved with instructions or programs written in existing computer languages. For example, such computer tasks as memory management and processor scheduling are better solved with formal computer languages. In addition to this, existing formal languages already have extensive runtime environments that can be leveraged.
It is thus preferred to have programming languages that are hybrids of natural language and formal programming language. There is thus a need for a compiler which recognizes and processes such a hybrid language and allows programmers to make advantageous use of certain natural language instructions when writing a program, all without the substantial overhead incurred by prior attempts to translate natural language instructions into executable code.
It is an object of the present invention to provide a method of compiling natural language source code instructions into computer-executable object code.
It is another object of the present invention to provide a method of compiling a source code file containing both natural language instructions and computer language (e.g., C++, Java) instructions into computer-executable object code.
It is an another object of the present invention to provide a computer program compiler which compiles natural language source code into computer-executable object code.
It is another object of the present invention to provide a computer programmer the to ability to program a computer using natural language.
It is another object of the present invention to provide a computer program compiler which compiles source code containing both natural language and computer language (e.g., C++, Java) content.
The above and other objects are achieved by a method of compiling a source code file containing natural language instructions by using a component database, the component database associating one or more instruction declarations with each of a plurality of natural language instructions. For each of the natural language instructions contained in the source code file, one or more components, each of which having at least one instruction declaration associated with the natural language instruction, is selected, thus resulting in a set of possible solutions for the compilation of the source code file. One of the resulting set of possible solutions is selected and each of the plurality of natural language instructions is associated with one of the components in the selected solution. If there is a natural language instruction in the source code file for which there is not at least one component in the component database which has an instruction declaration associated with it, the compiler will generate a message alerting the user of the inability to compiler the source code file.
Preferably, the component database is stored in a memory, such as a computer""s random access memory, a magnetic storage medium, or an optical memory system. Likewise, the source code file is preferably stored in a memory such as a computer""s random access memory, a magnetic storage medium, or an optical memory system.